<template>
  <view class="content">
    <image
      src="/static/recommend_brand_banner.png"
      class="banner-image"
    ></image>
    <view class="section-tit">相关品牌</view>
    <view class="goods-list">
      <view
        v-for="(item, index) in brandList"
        :key="index"
        class="goods-item"
        @click="navToDetailPage(item)"
      >
        <view class="image-wrapper">
          <image :src="item.logo" mode="aspectFit"></image>
        </view>
        <text class="title clamp">{{ item.name }}</text>
        <!-- <text class="title2">商品数量：{{item.productCount}}</text> -->
      </view>
    </view>
    <uni-load-more :status="loadingType"></uni-load-more>
  </view>
</template>

<script>
import { fetchBrandRecommendList } from '@/api/brand.js';
import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
export default {
  components: {
    uniLoadMore,
  },
  data() {
    return {
      loadingType: 'more', //加载更多状态
      brandList: [],
      searchParam: {
        pageNum: 1,
        pageSize: 6,
      },
    };
  },

  onLoad(options) {
    this.loadData();
  },
  //下拉刷新
  onPullDownRefresh() {
    this.loadData('refresh');
  },
  //加载更多
  onReachBottom() {
    this.searchParam.pageNum++;
    this.loadData();
  },
  methods: {
    //加载商品 ，带下拉刷新和上滑加载
    async loadData(type = 'add', loading) {
      //没有更多直接返回
      if (type === 'add') {
        if (this.loadingType === 'nomore') {
          return;
        }
        this.loadingType = 'loading';
      } else {
        this.loadingType = 'more';
      }

      if (type === 'refresh') {
        this.searchParam.pageNum = 1;
        this.brandList = [];
      }
      fetchBrandRecommendList(this.searchParam).then((response) => {
        let prandList = response.data;
        if (response.data.length === 0) {
          //没有更多了
          this.loadingType = 'nomore';
          this.searchParam.pageNum--;
        } else {
          if (response.data.length < this.searchParam.pageSize) {
            this.loadingType = 'nomore';
            this.searchParam.pageNum--;
          } else {
            this.loadingType = 'more';
          }
          this.brandList = this.brandList.concat(prandList);
        }
        if (type === 'refresh') {
          if (loading == 1) {
            uni.hideLoading();
          } else {
            uni.stopPullDownRefresh();
          }
        }
      });
    },
    //详情
    navToDetailPage(item) {
      let id = item.id;
      uni.navigateTo({
        url: `/pages/brand/brandDetail?id=${id}`,
      });
    },
    stopPrevent() {},
  },
};
</script>

<style lang="scss">
page,
.content {
  background: $page-color-base;
}
.banner-image {
  width: 100%;
}
.section-tit {
  font-size: $font-base + 2upx;
  color: $font-color-dark;
  background: #fff;
  margin-top: 16upx;
  text-align: center;
  padding-top: 20upx;
  padding-bottom: 20upx;
}
/* 商品列表 */
.goods-list {
  display: flex;
  flex-wrap: wrap;
  padding: 0 30upx;
  background: #fff;

  .goods-item {
    display: flex;
    flex-direction: column;
    width: 48%;
    padding-bottom: 40upx;

    &:nth-child(2n + 1) {
      margin-right: 4%;
    }
  }

  .image-wrapper {
    width: 100%;
    height: 150upx;
    border-radius: 3px;
    overflow: hidden;
    background-color: #fff;

    image {
      width: 100%;
      height: 100%;
      opacity: 1;
    }
  }

  .title {
    font-size: $font-lg;
    color: $font-color-dark;
    line-height: 80upx;
    text-align: center;
  }

  .title2 {
    font-size: $font-sm;
    color: $font-color-light;
    line-height: 40upx;
    height: 80upx;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
  }

  .price-box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-right: 10upx;
    font-size: 24upx;
    color: $font-color-light;
  }

  .price {
    font-size: $font-lg;
    color: $uni-color-primary;
    line-height: 1;
  }
}
</style>
